package com.hbnu.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.core.base.CommonPage;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.dto.TranProjectTSdto;
import com.hbnu.system.model.dto.Tranproject_registrationDTO;
import com.hbnu.system.model.entity.Tranproject_registration;
import com.hbnu.system.model.query.TranProjectExportQuery;
import com.hbnu.system.model.query.TranProjectPageQuery;
import com.hbnu.system.model.vo.ExportTranProjectVO;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
public interface ITranproject_registrationService extends IService<Tranproject_registration> {
    /**
     * 新增横向项目
     *
     * @param
     * @return 是否成功
     */
    boolean addTranproject(Tranproject_registrationDTO tranprojectRegistrationDTO);

    /**
     * 删除横向项目
     *
     */
    boolean deleteTranproject(String TRegistrationID) throws IOException;

    /**
     * 修改横向项目
     *
     */
    boolean updateTranproject(Tranproject_registrationDTO tranprojectRegistrationDTO);


    /**
     * 根据主键查询横向项目
     *
     */
    Tranproject_registration getTranproject(String TranprojectID);

    /**
     * 根据主键查询横向项目DTO
     *
     */
    Tranproject_registration getTranprojectDTOByID(String TranprojectID);


    /**
     * 提交横向项目在研申请
     *
     */
    Boolean CommitTranproject(String TranprojectID);

    /**
     * 在研院级审核通过
     */
    Boolean collegeCheckPass(String token,String tranprojectID);

    /**
     * 在研院级审核打回
     */
    Boolean collegeCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 在研校级审核通过
     */
    Boolean schoolCheckPass(String token,String tranprojectID);

    /**
     * 在研校级审核打回
     */
    Boolean schoolCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 提交横向项目结题申请
     *
     */
    Boolean CommitTranprojectFinish(String tranprojectID);

    /**
     * 院级结题审核通过
     */
    Boolean collegeFinishCheckPass(String token,String tranprojectID);

    /**
     * 院级结题审核打回
     */
    Boolean collegeFinishCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 校级结题审核通过
     */
    Boolean schoolFinishCheckPass(String token,String tranprojectID);

    /**
     * 校级结题审核打回
     */
    Boolean schoolFinishCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 用户获取自身项目
     * @param tranProjectPageQuery
     * @return
     */
    CommonPage<Tranproject_registration> userGetProjects(TranProjectPageQuery tranProjectPageQuery);

    /**
     * 导出文件
     * @param tranProjectPageQuery 查询条件
     * @return 导出的文件
     */
    CommonPage<Tranproject_registration> export(TranProjectPageQuery tranProjectPageQuery);

    /**
     * 导出横向项目
     * @param tranProjectExportQuery 查询条件
     * @return 导出的文件
     */
    List<ExportTranProjectVO> exportTranProject(TranProjectExportQuery tranProjectExportQuery);
    
    /**
     * 暂存横向项目数据
     * @param tranProjectTSdto 横向项目暂存DTO
     * @return 是否成功
     */
    boolean saveDraftTranProject(TranProjectTSdto tranProjectTSdto);
    
    /**
     * 在研项目撤回
     */
    Boolean withdrawHxProject(String token, String tranProjectID);

}
